// 封装token的存取本地方法

import { TokenInfo } from '@/type'

const KEY = 'geek-mobile'

function getToken() {
  // parse方法本身要求的参数时一个string类型
  // 而window.localStorage.getItem(KEY) 得到的可能是一个string也可能是一个null
  const value = window.localStorage.getItem(KEY)
  // 类型的安全判断(守卫) 如果value有值 相当于null的类型不存在 只可能是一个string类型了
  if (value) {
    return JSON.parse(value)
  }
}

function setToken(tokenInfo: TokenInfo): void {
  return window.localStorage.setItem(KEY, JSON.stringify(tokenInfo))
}

function removeToken() {
  window.localStorage.removeItem(KEY)
}

export { getToken, setToken, removeToken }
